TCP/IP协议会导致互联网服务产生哪些威胁
TCP/IP协议会导致互联网服务产生以下威胁:
SYN泛洪攻击:SYN泛洪攻击发生在服务器接收到远远超出其处理能力的大量的请求时。正常情况下,主机之间使用TCP传输数据时必须通过三次握手(3-Way Handshake)来初始化连接,SYN泛洪攻击原理是阻止TCP三次握手的完成。攻击者向受攻击主机发送SYN报文请求建立连接,报文中的源地址为伪造的、路由不可达地址。受攻击主机向伪造的地址发送SYN/ACK回应请求,等待对方回应。与正常TCP连接不同的是,SYN泛洪攻击阻止了三次握手最后过程的ACK包的发送,导致服务器端口一直处于半开状态,每个TCP端口都有接收半开连接的上限值,当连接数达到这个上限值时,服务器不再接收连接请求,攻击者的目的也就达到了。
IP欺骗:IP欺骗其实很简单,攻击者所需要做的就是产生一个源地址是伪造的IP数据包。这可以使用RAW-socket原始套接字来完成受攻击主机没有办法判断该数据包是否是伪造的,因为它仅仅是根据源地址来判断除了IP欺骗外,攻击者还要结合TCP序列号预测等技术来完成攻击。
TCP序列号预测:TCP序列号预测利用TCP是基于序列号(SNO)传输数据的特性来攻击TCP会话。TCP协议使用序列号保证应用层接收数据的完整性,虽然这是一种保证数据完整的有效方法,但是它同样存在缺陷。如果攻击者能猜测到正确的序列号,那么就能发出能被受攻击主机接收的TCP伪造数据包。
TCP会话挟持:TCP会话挟持可以用于攻击基于TCP协议的应用,如Telnet、rlogin、FTP等。对于攻击者来说,要实施攻击的前提是必须获取受攻击主机和欺骗主机之间的会话,从而获得正确的TCP序列号。一旦攻击者有了正确的TCP序列号,就可以成功的接管该会话。通常,TCP会话挟持用来接管一个Telnet会话,Telnet是非常容易受挟持的协议,它在客户端和服务端传输简单的字节流。攻击者只要将他们的指令插入被挟持的TCP数据段,服务器就会把这个TCP段指令串重装并执行。TCP会话挟持比其他的攻击方法更有效,如嗅探密码在使用高级认证技术的网络中,密码是经过加密的,嗅探攻击并不起作用,而TCP会话挟持攻击却可以。因此,攻击者更倾向于使用TCP挟持获取系统权限。
RST和FIN攻击:IP数据包有两个特殊的标志位,RST和FIN,可用于拒绝服务攻击。在正常情况下,RST标志用来重设连接,FIN标志表示没有数据要发送。攻击者分析通过目的主机和受骗主机之间的IP数据包,计算出从受骗主机发往目的主机的下一个TCP段的序列号,然后产生一个带有RST位设置的TCP段,将其放在假冒源地址的数据包中发往目标主机,目标主机收到后就关闭与受骗主机的连接。利用FIN位的攻击与RST位的攻击很相似,攻击者预测到正确的序列号后,使用它创建一个带有FIN位的TCP分段,然后发送给目的主机,好像受骗主机没有数据需要发送了,这样由受骗主机随后发出的TCP段就会因为目标主机认为是网络错误而忽略。
Ping of DeathPing攻击:程序通过发送一个ICMP回应请求消息和接收一个响应的ICMP回应来测试主机的连通性。ICMP回应请求放在IP数据包中,其中有8bytes的ICMP头信息,然后是Ping请求的数据字节数。因此数据区所允许的最大尺寸为65535-20-8=65507bytes。分段后的IP包要在接收端的IP层进行重组,这样就可以发送一个回应请求数据包,使它的数据包中的数据超过65507bytes,使得某些系统的IP分段组装模块出现异常,导致系统崩溃或重启。
可以通过加固操作系统来减少TCPIP产生的威胁,操作方法如下:
端口和进程:网络操作系统使用进程向外提供服务,减少无用软件及服务的任务就是要在所有系统进程中找出多余进程。由于进程通过打开网络端口向外提供服务,所以找出多余进程的最快方法是观察进程及端口对应表。Netstat命令显示协议统计和当前的TCP/IP网络连接,该命令只有在安装了TCP/IP协议后才可以使用。通过使用该命令可以列出一个系统上所有打开的TCP/IP网络监听端口。这些打开着的端口正是入侵者所要攻击的,因为它们通向系统平台内部。因此,作为平台加固的一部分,用户使用Netstat命令来识别出无关端口,并由此找到需要删除或禁用的服务。
安装系统补丁:所有软件都有缺陷。为了修复这些错误,供应商会发布软件补丁。如果没有这些补丁,组织很容易遭受攻击。在有很严格的更改控制策略的组织中,及时安装补丁会是一个问题。对补丁的彻底测试是这个过程的关键部分,因为供应商在解决旧问题时,有可能会引入新的问题。而对于和安全缺陷无关的补丁来说没有问题。但是,入侵者搜索和利用安全弱点的速度很快,所以要求有更快的安全补丁修正过程。企业必须注意安全补丁的发布,并随时准备快速地使用它们。
用户账户:用户账户标识了需要访问平台资源的实体(无论是应用程序进程还是人)。操作系统通过权限和优先权将用户账户与其访问控制系统相关联。因为用户账户是合法进入系统的机制,所以入侵者常常试图利用用户账户管理和访问控制中的缺陷。如果可以作为合法用户轻松地登录系统,那么为什么还要浪费时间去做自定义缓冲器溢出攻击呢?用户账户管理的弱点有5个方面:弱密码、制造商默认的账户、基于角色的账户、公司默认账户,以及废弃账户。在任何情况下,平台加固的目标是将用户账户数目减少到所需的绝对最小值。
用户特权:为每一个用户指派通常只能作为超级用户运行的特定的应用程序和功能,而不是真正地使用超级用户账户。也可以启用详细的日志记录,使得可以根据任何运行于超级用户功能追踪到某个特定的用户。在特定的应用中,意味着没有人使用过超级用户账户。
文件系统安全:通过在程序文件上设置SUID标志,某一个进程可以临时提升其特权用以完成某项任务(例如,访问文件passwd)。当程序执行时,可以暂时得到这些额外的特权而不用被全授予如此高的特权。这个SUID标志常常过度使用,当它与被黑客修改过的软件包结合时,被修改的程序执行后会使某个用户得到全时提升的系统权利。UNIX系统可能有很多带有这个标志的组件,但是通常只需要它们中的一小部分。建议使用命令从整个系统中删除不需要SUID标志程序的SUID标志。
远程访问的安全:Telnet和rlogin是UNIX系统上最常用的远程访问方式。这些系统都不采用加密技术来保护远程访问会话。一种被动的网络监听攻击可以看到用户在进入Telnet或者rlogin会话中按下的每一个键。安全Shell(SSH)是一种在UNIX及Window系统上使用的软件包,它提供与Telnet和rlogin相同功能,但增加了加密会话功能。这个软件包已经成为用加密和访问控制的各种可配置级别进行安全远程访问的行业标准。